package fr.miage.course7.app.workdata;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

import fr.miage.course7.app.App;


/**
 * Classe gérant la reception de coordonnées GPX via le socket.
 * @author Jonathan LAMOTTE
 *
 */
public class Reception implements Runnable {

    /**
     * Buffer d'entrée.
     */
    private BufferedReader in;

    /**
     * Socket de communication.
     */
    private Socket socket;

    /**
     * Constructeur.
     * @param sock : socket de communication
     */
    public Reception(final Socket sock) {
        this.socket = sock;

        try {
            in = new BufferedReader(
                          new InputStreamReader(socket.getInputStream())
                                   );

        } catch (IOException e) {
            System.err.println("Impossible de communiquer avec " + socket);
        }
    }

    /**
     * Surcharge de la fonction run().
     */
    public final void run() {

        String message = "";

        //Ecoute d'un message du client
        try {
            message = in.readLine();
        } catch (IOException e) {
            System.err.println("Deconnection du serveur " + socket);
            App.exit();
        }

        while (message != null) {
            try {

              //parsage de la transmission et ajout de celle-ci dans le modele
                XMLReader.parseTransmissions(message);

                App.updateView();

                //Ecoute d'un message du client
                message = in.readLine();

            } catch (IOException e) {
                System.err.println("Deconnection du serveur");
                App.exit();
                //Arret du thread
                message = null;
            }
        }
    }
}

